home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / gfx / misc / gnuplot-3.7src.lha / gnuplot-3.7src / gnuplot-3.7.lha / gnuplot-3.7 / win / geticon.c next >
C/C++ Source or Header  |  1998-12-01  |  2KB  |  101 lines

  1. #ifndef lint
  2. static char *RCSid = "$Id: geticon.c,v 1.2 1993/09/27 17:24:27 alex Exp $";
  3. #endif
  4.  
  5. /* geticon.c */
  6. /* extract Borland ascii format icons from resource script */
  7. /* and write as Microsoft binary format .ICO files */
  8. /* Russell Lang 1992-12-20 */
  9.  
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <string.h>
  13. #include <ctype.h>
  14.  
  15. /* HBB 980809: naming a variable 'inline' is a bad idea, these days. Too
  16.  * many compilers use it as a keyword... Changed to 'inputline' */
  17. #define MAXLINE 255
  18. FILE *rcfile;
  19. char inputline[MAXLINE+1];
  20. char *tok1, *tok2, *tok3;
  21. char *p;
  22. char iconname[MAXLINE+1];
  23. FILE *iconfile;
  24. int line;
  25.  
  26. int htoi(char ch)
  27. {
  28.     ch = toupper(ch);
  29.     if (ch < '0')
  30.         return(0);
  31.     else if (ch <= '9')
  32.         return((int)(ch - '0'));
  33.     else if (ch < 'A')
  34.         return(0);
  35.     else if (ch <= 'F')
  36.         return((int)(ch - 'A' + 10));
  37.     return(0);
  38. }
  39.  
  40. void
  41. geticon(void)
  42. {
  43. char ch;
  44.     fgets(inputline,MAXLINE,rcfile);
  45.     line++;
  46.     if (strncmp(inputline,"BEGIN",5)) {
  47.         fprintf(stderr,"Expecting BEGIN at line %d\n",line);
  48.         exit(3);
  49.     }
  50.     if ( (iconfile = fopen(iconname,"wb")) == (FILE *)NULL) {
  51.         fprintf(stderr,"Can't open ICON file %s\n",iconname);
  52.         exit(4);
  53.     }
  54.     fgets(inputline,MAXLINE,rcfile);
  55.     line++;
  56.     while (strncmp(inputline,"END",3) && !feof(rcfile)) {
  57.         for (p = inputline; *p && (*p==' ' || *p == '\t' || *p=='\''); p++);
  58.         while (isxdigit(*p)) {
  59.             ch = htoi(*p++)<<4;
  60.             ch += htoi(*p++);
  61.             fputc(ch, iconfile);
  62.             p++;
  63.         }
  64.         fgets(inputline,MAXLINE,rcfile);
  65.         line++;
  66.     }
  67.     fclose(iconfile);
  68. }
  69.  
  70. int
  71. main(int argc, char *argv[])
  72. {
  73.     if ((argc < 2) || (argc > 3)) {
  74.     fprintf(stderr,"Usage:  geticon  resource_file [icon_directory]\n");
  75.     return(1);
  76.     }
  77.     if ( (rcfile = fopen(argv[1],"r")) == (FILE *)NULL) {
  78.     fprintf(stderr,"Can't open RC file\n");
  79.     return(2);
  80.     }
  81.     line = 0;
  82.     while (fgets(inputline,MAXLINE,rcfile)) {
  83.         line++;
  84.     tok1 = strtok(inputline," \t\r\n");
  85.     tok2 = strtok(NULL," \t\r\n");
  86.     tok3 = strtok(NULL," \t\r\n");
  87.     if (tok2 && !strcmp(tok2,"ICON") && (tok3 == (char *)NULL)) {
  88.             iconname[0] = '\0';
  89.         if (argc == 3) {
  90.                 strcpy(iconname,argv[2]);
  91.                 strcat(iconname,"\\");
  92.             }
  93.             strcat(iconname,tok1);
  94.             strcat(iconname,".ico");
  95.         fprintf(stdout,"%s\n",iconname);
  96.         geticon();
  97.     }
  98.     }
  99.     return (0);
  100. }
  101.